///// 比较规则
const NOT_EQUAL = 'NE'; // 不等于
const EQUAL = 'E'; // 等于
const GREATER_THAN = 'GT'; // 大于
const GREATER_EQUAL_THAN = 'GET'; // 大于等于
const LESS_THAN = 'LT';  // 小于
const LESS_EQUAL_THAN = 'LET';  // 小于等于
const IN = 'IN'; //在指定数组里
const NOT_IN = 'NI'; //不在指定数组里


/**
 *
 * @param dataValue 后端返回的指定数据的值
 * @param preDefValue 预定义的数据的值
 * @param condition 条件
 *     {
 *        'NE'; // 不等于
 *        'E'; // 等于
 *        'GT'; // 大于
 *        'GET'; // 大于等于
 *        'LT';  // 小于
 *        'LET';  // 小于等于
 *        'IN'; //在指定数组里
 *        'NI'; //不在指定数组里
 *     }
 * @returns {boolean}
 */
export function computCondition(dataValue, preDefValue, condition) {
  switch (condition) {
    case NOT_EQUAL:
      return computNotEqual(dataValue, preDefValue);
    case EQUAL:
      return computEqual(dataValue, preDefValue);
    case GREATER_THAN:
      return computGreater(dataValue, preDefValue);
    case GREATER_EQUAL_THAN:
      return computGreaterEqual(dataValue, preDefValue);
    case LESS_THAN:
      return computLess(dataValue, preDefValue);
    case LESS_EQUAL_THAN:
      return computLessEqual(dataValue, preDefValue);
    case IN:
      return computIn(dataValue, preDefValue);
    case NOT_IN:
      return computNotIn(dataValue, preDefValue);
    default:
      break;
  }

  return false;
}

/**
 * 计算传入的两个值不相等，则返回true；相等，则返回false
 * @param dataValue
 * @param preDefValue
 * @returns {boolean}
 */
function computNotEqual(dataValue, preDefValue) {
  if(dataValue !== preDefValue) {
    return true;
  }

  return false;
}

/**
 * 计算传入的两个值相等，则返回true；不相等，则返回false
 * @param dataValue
 * @param preDefValue
 * @returns {boolean}
 */
function computEqual(dataValue, preDefValue) {
  if(dataValue === preDefValue) {
    return true;
  }

  return false;
}

/**
 * 如果数据的值大于预定义的值，则返回true；否则，则返回false
 * @param dataValue
 * @param preDefValue
 * @returns {boolean}
 */
function computGreater(dataValue, preDefValue) {
  if(dataValue > preDefValue) {
    return true;
  }

  return false;
}
/**
 * 如果数据的值大于等于预定义的值，则返回true；否则，则返回false
 * @param dataValue
 * @param preDefValue
 * @returns {boolean}
 */
function computGreaterEqual(dataValue, preDefValue) {
  if(dataValue >= preDefValue) {
    return true;
  }

  return false;
}
/**
 * 如果数据的值小于预定义的值，则返回true；否则，则返回false
 * @param dataValue
 * @param preDefValue
 * @returns {boolean}
 */
function computLess(dataValue, preDefValue) {
  if(dataValue < preDefValue) {
    return true;
  }

  return false;
}
/**
 * 如果数据的值小于等于预定义的值，则返回true；否则，则返回false
 * @param dataValue
 * @param preDefValue
 * @returns {boolean}
 */
function computLessEqual(dataValue, preDefValue) {
  if(dataValue <= preDefValue) {
    return true;
  }

  return false;
}

/**
 * 如果数据的值在预定义的数组里，则返回true；否则，则返回false
 * @param dataValue
 * @param preDefValue
 * @returns {boolean}
 */
function computIn(dataValue, preDefValue) {
  for(var i=0; i<preDefValue.length; i++) {
    if(dataValue == preDefValue[i]) {
      return true;
    }
  }

  return false;
}

/**
 * 如果数据的值不在预定义的数组里，则返回true；否则，则返回false
 * @param dataValue
 * @param preDefValue
 * @returns {boolean}
 */
function computNotIn(dataValue, preDefValue) {
  for(var i=0; i<preDefValue.length; i++) {
    if(dataValue == preDefValue[i]) {
      return false;
    }
  }

  return true;
}
